package entrega;
import java.io.*;
/**
 * Programa que gestiona la venta de billetes de un autobús. Hay precios 
 * diferentes para cada grupo de edad.
 * Al final del programa se mostrará un informe con el número de billetes
 * vendidos para cada grupo de edad, la recaudación total del autobús y 
 * el porcentaje de ocupación.
 * @author →Alberto Manrique←
 */
public class Ejercicio3_5_12_12 
{//clase

    public static void main(String args[])throws IOException
    {//main
        int plazas=60;
        int bebes=0;
        int joven=0;
        int adulto=0;
        int ancianos=0;
        int totalbebes;
        int billetes;
        int edad;
        float totaljoven=0f;
        float totaladulto=0f;
        float totalancianos=0f;
        float total=0f;
        float porcentaje=0f;
        boolean ocupado=false;
        
        System.out.println("\tBIENVENIDO AL SISTEMA DE VENTA"
                + " DE BILLETES DE AUTOBÚS\n");
        
        billetes=pedirBilletes("¿Cuantos billetes desea comprar? ",plazas);
        if(billetes==0)
        {//si mete 0
                 System.out.println("No hay datos");
        }//si mete 0
        else
        {
            if(billetes>plazas)
            {
                ocupado=true;
            }
            else
            {
                while(plazas>=1 && billetes!=0)
                { //mientras haya plazas  
                        
                        edad=pedirEdad("¿Para que edad?\t");
                        while(edad<0)
                        {//edad positiva
                            edad=pedirEdad("Edad errónea, introduzca de nuevo\t");
                        }//edad  positiva
                        if (edad>=0 && edad <=6)
                        {//bebes
                            bebes+=billetes;
                        }//bebes
                        else
                        {//no bebes
                            if(edad>6 && edad<=18)
                            {//joven
                                joven+=billetes;  
                            }//joven
                            else
                            {//no joven
                                if(edad>18 && edad <=65)
                                {//adulto
                                    adulto+=billetes;
                                }//adulto
                                else
                                {//ancianos
                                    ancianos+=billetes;
                                }//ancianos
                            }//no joven
                        } //no bebes
                        plazas=plazas-billetes;
                        
                        if(plazas==0)
                        {
                            System.out.println("Lo sentimos. "
                                    + "No quedan plazas libres");
                        }
                        else
                        {
                          billetes=pedirBilletes("¿Cuantos billetes desea comprar?\t",plazas);  
                        }
                  
                }//si plazas ==0 
            }//La primera vez meto un número menor que plazas
        
        if(ocupado)
            {
               System.out.println("Lo sentimos. No nos quedan plazas libres"); 
            }

            totalbebes=(bebes*0);
            totaljoven=(float) (joven*0.5);
            totaladulto=adulto*1;
            totalancianos=(float) (ancianos*0.25);
            total=totalbebes+totaljoven+totaladulto+totalancianos;
            plazas=bebes+joven+adulto+ancianos;
            porcentaje=(float) plazas/60*100;
            
            System.out.println("\n\nGracias por confiar en nosotros\tLe deseamos buen viaje\n\n");
            System.out.println("\t\tResumen de ventas\n");
            System.out.println("EDADES\t\tNºBILLETES\t\tRECAUDACIÓN");
            System.out.println("0-6 años\t\t"+bebes+"\t\t\t"+totalbebes+" €");
            System.out.println("6-18 años\t\t"+joven+"\t\t\t"+totaljoven+" €");
            System.out.println("18-65 años\t\t"+adulto+"\t\t\t"+totaladulto+" €");
            System.out.println("más 65 años\t\t"+ancianos+"\t\t\t"+totalancianos+" €");
            System.out.println("_________________________________________________________");
            System.out.println("TOTAL\t\t\t"+plazas+"\t\t\t"+total+" €");
            System.out.println("Porcentaje de ocupación del autobús: "+porcentaje+" %");
        }
    }//main
    
    
    /**
     * Método que me pide el número de billetes que quiere el cliente
     * @param mensaje
     * @param libres
     * @return numero de billetes
     * @throws IOException 
     */
    public static int pedirBilletes(String mensaje, int libres)throws IOException
    {//pedir billetes
        int numero=0;
        InputStreamReader flujo=new InputStreamReader(System.in);
        BufferedReader teclado=new BufferedReader(flujo);
        System.out.println(mensaje);
        try
        {//try
        numero=Integer.parseInt(teclado.readLine());
        while(numero>libres)
        {
            System.out.println("Lo sentimos. No nos quedan plazas libres\n");
            System.out.println("¿Cuantos billetes desea comprar?" );
            numero=Integer.parseInt(teclado.readLine());
        }
        }//try
        catch(NumberFormatException es)
        {
            System.out.println("No es un número");
            System.out.println("¿Cuantos billetes desea comprar?" );
            numero=Integer.parseInt(teclado.readLine());
        }
        return numero;//DEVUELVE EL NUMERO
    } //pedir billetes
    
    /**
     * Método que sirve para pedir la edad de los viajeros
     * @param mensaje
     * @return numero
     * @throws IOException 
     */
    public static int pedirEdad(String mensaje)throws IOException//Metodo que pide un número
    {//pedir edad
        int numero=0;
        InputStreamReader flujo=new InputStreamReader(System.in);
        BufferedReader teclado=new BufferedReader(flujo);
        System.out.println(mensaje);//MENSAJE LO HE PASADO DESDE edad
        try
        {
        
            numero=Integer.parseInt(teclado.readLine());
        }
        catch(NumberFormatException es)
        {
            System.out.println("No es un número");
            System.out.println("¿Para que edad?\t");
            numero=Integer.parseInt(teclado.readLine());
        }
        return numero;//DEVUELVE EL NUMERO
    } //pedir edad
}//clase
